home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / workbench / docs / asm_guide / assembler course / 2.s < prev    next >
Text File  |  1992-04-27  |  2KB  |  37 lines

  1. ; this program shows the working of indirect addressing with post-
  2. ; increment. We move first 'data' to a0 and a1.
  3. ; With a0 nothing happens, a1 is used for 3 moves with postincrement
  4. ; When you executed this source, you will again get a list with the
  5. ; status of the registers. Have a look at the contents of d0,d1 & d3
  6. ; a0 contains the address that seka assigned to label 'data'
  7. ; (type ?data, it will show the same value)
  8. ; a1 is the address after the 3 postincrements. You see that a1 is
  9. ;  3 bigger than a0, because of the postincrements.
  10.  
  11. ; try to change this program, that we get WORDS moved in d0,d1 & d3.
  12. ; you'll then see that a1 will be 6 bigger than a0, after 3 postincrements
  13. ; After a MOVE.W with postincrement, the addr.reg will be increased
  14. ; with 1 WORD (=2 bytes !!), after 3 MOVE.W's that will be 6 bytes.
  15.  
  16. top:
  17.     move.l    #data,a0    ; address of 'data'-label in a0
  18.     move.l    a0,a1        ; copy value currently stored in a0
  19.                 ;                   to a1
  20.     move.b    (a1)+,d0    ; byte contained in (a1) to d0, 
  21.     move.b    (a1)+,d1    ; byte contained in (a1) to d1,
  22.     move.b    (a1)+,d2    ; byte contained in (a1) to d2
  23.  
  24.     rts
  25.  
  26. data:    dc.b    1,2,3,4,5,6,7,8,9,10,11,12
  27.     even
  28.  
  29. ; note: DC.x (.B, .W or .L) means: DECLARE BYTE (or word or longword) 
  30. ;    so the values behind a 'dc.b' have the size of a byte, the ones
  31. ;    behind a 'dc.l' have a length of 4 bytes (1 longword)
  32. ;    Also note that if you have done a certain amount of dc.b's
  33. ;    and you want to put a dc.l or dc.w now, you must put 'even' first,
  34. ;    coz longwords and words can only be placed on EVEN adresses.
  35. ;    Don't worry if you forget, you will get an error message
  36.  
  37.